"""
pool.map
"""

# zhushi
import time
from multiprocessing import Pool


def run(fn):
    # fn: 函数参数是数据列表的一个元素
    time.sleep(1)
    return fn * fn


if __name__ == "__main__":
    testFL = [1, 2, 3, 4, 5, 6]

    #  写法一  #
    ###########
    # pool = Pool(3)  # 创建拥有3个进程数量的进程池
    # result = pool.map(run, testFL)  # testFL:要处理的数据列表，run：处理testFL列表中数据的函数，result用于接受返回值
    # pool.close()  # 关闭进程池，不再接受新的进程
    # pool.join()  # 主进程阻塞等待子进程的退出


    #  写法二  #
    ###########
    with Pool(3) as p:
        result = p.map(run, testFL)    # map的第二个参数可以是列表也可以元组
        p.close()  # 关闭进程池，不再接受新的进程
        p.join()  # 主进程阻塞等待子进程的退出
    
    print(result)